package main

import "fmt"

func swap(a, b *int) (*int , *int) {
	b, a = a, b
	return a, b
}

func main() {
	x, y := 1, 2
	fmt.Println("x的初始地址：", &x, "y的初始地址：", &y)
	a, b := swap(&x, &y)
	fmt.Println("swap 后x的值：", x, "swap 后y的值：：", y)
	fmt.Println("swap 后x的地址：", &x, "swap 后y的地址：", &y)
	fmt.Println("swap 后a的值：", a, "swap 后b的值：", b)
	fmt.Println("swap 后a指向的值：", *a, "swap 后b指向的值：", *b)
}

//x的初始地址： 0xc00000e0b8 y的初始地址： 0xc00000e0d0
//swap 后x的值： 1 swap 后y的值：： 2
//swap 后x的地址： 0xc00000e0b8 swap 后y的地址： 0xc00000e0d0
//swap 后a的值： 0xc00000e0d0 swap 后b的值： 0xc00000e0b8
//swap 后a指向的值： 2 swap 后b指向的值： 1